
/**
 * Comprueba si la aplicación se encuentra en modo de edición. Devuelve true/false
 * 
 * @return {Boolean} 
 * @properties={typeid:24,uuid:"7AB2950B-19AE-4028-B0A0-63F5C0AA0F0E"}
 */
function isEditing() {

	return !databaseManager.getAutoSave();
}

/**
 * Establece el modo de edición la aplicación. Retorno si tiene éxito
 * 
 * @return {Boolean}
 * @properties={typeid:24,uuid:"A33F4E5D-4AD6-4F1B-A491-8653432A0CF9"}
 */
function startEditing(){
	
	return databaseManager.setAutoSave(false);
}

/**
 * Cancela el modo de edición de la aplicación. Retorna si tiene éxito
 *
 * @return {Boolean}
 * @properties={typeid:24,uuid:"B2294EC8-EDF4-484D-95F7-5C3CA7C0D6B7"}
 */
function cancelEditing(){
	
	databaseManager.revertEditedRecords();
	return databaseManager.setAutoSave(true);
}

/**
 * Salva los cambios realizados en el foundset pasado como parámetro
 * 
 * @param {JSFoundSet} foundset
 * @properties={typeid:24,uuid:"5DE797FA-4235-47C4-954A-49BCA6327BEE"}
 */
function saveRecordsFs(foundset){
	
	return databaseManager.saveData(foundset);
}

/**
 * Salva los cambios realizados en el record pasado como parámetro
 * 
 * @param {JSRecord} record
 * @properties={typeid:24,uuid:"5E074526-9B67-49D5-B476-D8D0039F3378"}
 */
function saveRecordsRc(record){
	
	return databaseManager.saveData(record);
}

/**
 * Salva todos los cambios pendientes
 * 
 * @properties={typeid:24,uuid:"AF06D6E0-312E-470F-A93E-6E3A83092EA7"}
 */
function saveRecords(){
	
	return databaseManager.saveData();
}

/**
 * Función que se aplica a un formulario cuando se establece el modo de alta/edición
 * - Cambia los colores de los campos de aquellos cuyo nombre empieza por fld_
 * - Cambia el atributo de sólo lectura de aquellos campos cuyo nombre empieza por fld_
 * - Posiciona el foco en el primer campo según el orden de tabulación
 * 
 * @param {String} frm
 * @properties={typeid:24,uuid:"6C3D7FAD-3B1B-4A1E-A35B-EF40DE618B79"}
 */
function doEdit(frm){
	
	forms[frm].controller.focusFirstField();
	
	if (!globals.isEditing()) 
		globals.startEditing()
	
	var allNames = forms[frm].elements.allnames
	for (var i = 0; i < allNames.length; i++) {
		if (allNames[i].indexOf('fld_') >= 0) {
			forms[frm].elements[allNames[i]].bgcolor = '#feffe4';
			forms[frm].elements[allNames[i]]["readOnly"] = false;
		}
		if (allNames[i].indexOf('vlst_') >= 0) {
			forms[frm].elements[allNames[i]].bgcolor = '#feffe4';
			forms[frm].elements[allNames[i]]["readOnly"] = false;
		}
	}
	forms[frm].controller.focusFirstField();
}

/**
 * Función que se aplica a un formulario cuando se establece el modo de alta/edición
 * - Cambia los colores de los campos de aquellos cuyo nombre empieza por fld_
 * - Cambia el atributo de sólo lectura de aquellos campos cuyo nombre empieza por fld_
 * - Posiciona el foco en el primer campo según el orden de tabulación
 * 
 * @param {String} frm
 * @properties={typeid:24,uuid:"660C1735-12BF-4693-860A-3805044644B2"}
 */
function hide_btn_reset_fields(frm) {

	if (globals.isEditing()) 
		globals.cancelEditing();
	
	var allNames = forms[frm].elements.allnames
	for (var i = 0; i < allNames.length; i++) {
		if (allNames[i].indexOf('fld_') >= 0) {
			forms[frm].elements[allNames[i]]["readOnly"] = true;
			forms[frm].elements[allNames[i]]["bgcolor"] = '#F5F7F9';
		}
		if (allNames[i].indexOf('vlst_') >= 0) {
			forms[frm].elements[allNames[i]].bgcolor = '#F5F7F9';
			forms[frm].elements[allNames[i]]["readOnly"] = true;
		}
	}
}

/**
 * @param {JSFoundSet} fs
 * @return {Boolean}
 * @properties={typeid:24,uuid:"FBD79AB4-8395-470D-99C2-B23746ABD5A2"}
 */
function deleteRecord(fs){
	
	return fs.deleteAllRecords();
}

/**
 * @param {JSEvent} event
 * @param {JSFoundSet} fs
 * @param {String} frm
 *
 * @properties={typeid:24,uuid:"7A0336B7-4E7E-4E69-B3B7-22D28948A386"}
 */
function btnIrFicha(event, fs, frm) {

	var win = application.createWindow(application.getUUID().toString(),JSWindow.MODAL_DIALOG);
	win.resizable = false;
	if (forms[frm]["titulo_defecto"]) win.title = forms[frm]["titulo_defecto"];
	if (forms[frm].hide_btn_reset_fields) forms[frm].hide_btn_reset_fields();
	forms[frm].foundset.loadRecords(fs);
	win.show(forms[frm]);
}

/**
 * @param {JSEvent} event
 * @param {JSFoundSet} fs
 * @param {String} frm
 *
 * @properties={typeid:24,uuid:"283A2212-B8BC-45E6-9501-7F542CE72785"}
 */
function btnIrFichaEdit(event, fs, frm){
	
	var win = application.createWindow(application.getUUID().toString(),JSWindow.MODAL_DIALOG);
	win.resizable = false;
	if (forms[frm]["titulo_defecto"]) win.title = forms[frm]["titulo_defecto"];
	if (forms[frm].doEdit) forms[frm].doEdit();
	forms[frm].foundset.loadRecords(fs);
	win.show(forms[frm]);
}